use super::crypt_algid::CRYPT_CIPHER_AlgId;
use super::crypt_types::{CRYPT_EAL_LibCtx, CRYPT_PaddingType};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct CryptEalCipherCtx {
    _unused: [u8; 0],
}
pub type CRYPT_EAL_CipherCtx = CryptEalCipherCtx;
unsafe extern "C" {
    pub fn CRYPT_EAL_CipherIsValidAlgId(id: CRYPT_CIPHER_AlgId) -> bool;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_CipherNewCtx(id: CRYPT_CIPHER_AlgId) -> *mut CRYPT_EAL_CipherCtx;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_ProviderCipherNewCtx(
        libCtx: *mut CRYPT_EAL_LibCtx,
        algId: i32,
        attrName: *const ::std::os::raw::c_char,
    ) -> *mut CRYPT_EAL_CipherCtx;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_CipherFreeCtx(ctx: *mut CRYPT_EAL_CipherCtx);
}
unsafe extern "C" {
    pub fn CRYPT_EAL_CipherInit(
        ctx: *mut CRYPT_EAL_CipherCtx,
        key: *const u8,
        keyLen: u32,
        iv: *const u8,
        ivLen: u32,
        enc: bool,
    ) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_CipherDeinit(ctx: *mut CRYPT_EAL_CipherCtx);
}
unsafe extern "C" {
    pub fn CRYPT_EAL_CipherReinit(ctx: *mut CRYPT_EAL_CipherCtx, iv: *mut u8, ivLen: u32) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_CipherUpdate(
        ctx: *mut CRYPT_EAL_CipherCtx,
        in_: *const u8,
        inLen: u32,
        out: *mut u8,
        outLen: *mut u32,
    ) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_CipherFinal(
        ctx: *mut CRYPT_EAL_CipherCtx,
        out: *mut u8,
        outLen: *mut u32,
    ) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_CipherCtrl(
        ctx: *mut CRYPT_EAL_CipherCtx,
        type_: i32,
        data: *mut ::std::os::raw::c_void,
        len: u32,
    ) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_CipherSetPadding(
        ctx: *mut CRYPT_EAL_CipherCtx,
        type_: CRYPT_PaddingType,
    ) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_CipherGetPadding(ctx: *mut CRYPT_EAL_CipherCtx) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_CipherGetInfo(id: CRYPT_CIPHER_AlgId, type_: i32, infoValue: *mut u32) -> i32;
}
